package com.example.logindemo.repository;

import com.example.logindemo.entity.Review;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;

@Repository
public interface ReviewRepository extends JpaRepository<Review, Integer> {
    
    // 根据跑单ID查询评价
    Optional<Review> findByRunOrderId(String runOrderId);
    
    // 根据用户ID查询评价列表
    List<Review> findByUserId(Integer userId);
    
    // 根据评分查询评价列表
    List<Review> findByRating(Integer rating);
    
    // 根据用户ID和评分查询评价列表
    List<Review> findByUserIdAndRating(Integer userId, Integer rating);
    
    // 按创建时间降序排序，获取最新的评价
    List<Review> findTop10ByOrderByCreateTimeDesc();
    
    // 获取指定评分范围内的评价
    @Query("SELECT r FROM Review r WHERE r.rating >= :minRating AND r.rating <= :maxRating")
    List<Review> findByRatingBetween(Integer minRating, Integer maxRating);
    
    // 统计平均评分
    @Query("SELECT AVG(r.rating) FROM Review r")
    Double getAverageRating();
    
    // 统计总评价数量
    long count();
    
    // 统计用户的评价数量
    long countByUserId(Integer userId);
    
    // 检查是否存在指定跑单的评价
    boolean existsByRunOrderId(String runOrderId);
    
    // 根据ID删除评价
    void deleteById(Integer id);
}